package com.ucode.model.hrm;

import com.ucode.model.hrm.enums.HrmAttendanceRecordsStatusEnum;
import com.ucode.tool.base.BaseTenantMode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 打卡记录
 * @Author: liliang
 * @Date: 2025/3/28 14:38
 * @Version: 1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class HrmAttendanceRecord  extends BaseTenantMode<Long,Long> {

    /**
     * 员工ID
     */
    private Long employeeId;

    /**
     * 客户公司ID
     */
    private Long companyId;
    /**
     * 客户公司项目ID
     */
    private Long projectId;

    /**
     * 考勤日期
     */
    private LocalDate workDate;

    // 上班打卡信息
    /**
     * 上班打卡时间
     */
    private LocalDateTime clockInTime;
    /**
     * 上班打卡纬度
     */
    private BigDecimal clockInLat;
    /**
     * 上班打卡经度
     */
    private BigDecimal clockInLng;
    /**
     * 上班是否在范围内
     */
    private Boolean clockInInRange;
    /**
     * 迟到时长(分钟)
     */
    private Integer lateDuration;
    /**
     * 上班打卡位置
     */
    private String clockInLocation;
    /**
     * 上班打卡图片
     */
    private List<String> clockInPics;
    /**
     * 上班打卡备注信息
     */
    private String clockInRemark;

    // 下班打卡信息
    /**
     * 下班打卡时间
     */
    private LocalDateTime clockOutTime;
    /**
     * 下班打卡纬度
     */
    private BigDecimal clockOutLat;
    /**
     * 下班打卡经度
     */
    private BigDecimal clockOutLng;
    /**
     * 下班是否在范围内
     */
    private Boolean clockOutInRange;
    /**
     * 早退时长(分钟)
     */
    private Integer earlyLeaveDuration;
    /**
     * 下班打卡位置
     */
    private String clockOutLocation;
    /**
     * 下班打卡图片
     */
    private List<String> clockOutPics;
    /**
     * 下班打卡备注信息
     */
    private String clockOutRemark;

    /**
     * 打卡状态
     * 枚举 {@link HrmAttendanceRecordsStatusEnum}
     */
    private Integer statuz;
}
